#ifndef USER_H
#define USER_H

#include <QObject>
#include "Friend.h"
#include <vector>
#include "community.h"
#include "fileinformation.h"

class User : public QObject
{
    Q_OBJECT
public:
    explicit User(QObject *parent = nullptr);

signals:
    //信号函数


private:
    //属性
    QString accountNumber; //用户账号
    QString networdName; //用户网名
    QString personalSignature; //用户个性签名
    std::vector<Friend> friends; //用户好友数组
    std::vector<Community> community; //用户群聊数组
    int icon; //用户头像编号
    bool state; //用户状态
private:
    //辅助接口
    int FindFriendsLocation(Friend& f); //寻找好友在数组中的位置下标

public:
    //提供的接口
    void TextMessages(QString& content /*in*/,Friend f /*in*/); //聊天接口，传入文字聊天信息、当前好友信息，无返回值
    void ModifyPersonalSignature(QString& newSignature /*in*/); //修改个性签名接口，传入新的个性签名，无返回值
    void ModifyPassword(QString& newPassword /*in*/); //修改密码接口，传入新的密码，无返回值
    void ModifyNetworkNuame(QString& newName /*in*/); //修改昵称接口，传入新的昵称，无返回值
    void SearchMessage(QString& messageKey /*in*/,std::vector<QString>& name /*out*/); //查找信息接口，传入信息关键字，返回聊天记录有该关键字的好友姓名
    void GetFriends(std::vector<Friend>& friends /*out*/); //获取好友列表接口，无输入，返回好友对象数组
    void GetCommunity(std::vector<Community>& community /*out*/); //获取群聊列表接口，无输入，返回群聊对象数组
    void SerchFriend(QString& accountNumber /*in*/,bool flag /*out*/,Friend& f /*out*/); //查找好友接口，传入好友的账号，返回是否查找成功和好友信息
    void AddFriend(Friend& f /*in*/); //添加好友接口，传入好友信息，无返回值
    void SerchCommunity(QString accountNumber /*in*/,bool flag /*out*/,Community& community/*out*/); //查找群接口，传入群聊的账号，返回是否查找成功和群聊信息
    void AddCommunity(Community& community /*in*/); //添加群聊接口，传入群聊信息，无返回值
    void FilterFiles(QString& fileExtension /*in*/,std::vector<FileInformation>& fileInformation /*out*/); //文件过滤筛选接口，传入文件拓展名，返回文件信息对象数组
    void Logout(); //退出登录函数
public:
    //重载运算符

};

#endif // USER_H
